
#include <iostream>
#include <stdlib.h>


using namespace std;

// int main(int argc, char *argv[])
// {
//     cout << "hello, world" << endl;
// //    hanoTower(8, 'a', 'b', 'c');
//     system("ls");
//     system(" pwd ");
//     return 0;
// }
class interface
{
public:
    virtual void run() = 0;
};

class Parent : public interface
{
private:
    /* data */
    int parent;
    int a;
    int b;
protected:
    int c;
    int d;
public:
    Parent(/* args */);
    ~Parent();
    int e;
    int f;
    int cal();
    virtual void run();
};

void Parent::run()
{
    cout << "hello, world. I'm the parent!" << endl;
}

class process
{
public:
    interface *point;
};
// class Child : public Parent
// {
// private:
//     /* data */
//     int parent;
// public:
//     Child(/* args */);
//     ~Child(); 
// };

// Child::Child()
// {
//     cout << " Child() Child construct parent" << endl;
//     c = 10;
// }

// Child::~Child()
// {
//     cout << " ~Child() destruct parent~" << endl;
// }

Parent::Parent(/* args */):a(5), b(6), c(7), d(8), e(9), f(10)
{
    cout << "Parent construct parent" << endl;
}

Parent::~Parent()
{
    cout << " ~Parent() destruct parent~" << endl;
}

int Parent::cal()
{
    cout << "a + b = " << a + b << endl;
}

class Test
{
    int mi;
    public:
    Test(int i)
    {
        mi = i;
        cout << "hello mi = "  << mi << endl;
    }

    Test()
    {
        Test(0);
        cout << "hello , world mi = " << mi << endl;

    }

    ~Test()
    {
        cout << "~Test() mi = " << mi << endl;
    }

    void print()
    {
        cout << "mi = " << mi << endl;
    }
};

int main(int argc, char** argv)
{
    // Parent parent;
    // // Child child;
    // // // cout << "parent.c = " << parent.c << endl;
    // // cout << "parent.e = " << child.e << endl;
    // // cout << "parent.f = " << child.f << endl;
    // // // cout << "parent.a = " << parent.a << endl;
    // parent.cal();
    // process *p = new process;
    // p->point = static_cast<Parent*>(&parent);
    // p->point->run();
    // child.cal();
  //  cout << "hello, world" << Parent::a <<endl;

  Test t;
  // t.print();
    return 0;
}
